/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package diseño09.controles;

import diseño09.entidades.Persona;
import java.util.Vector;
import javax.swing.JComboBox;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
 *
 * @author aguwolky
 */
public class VerificadorDeUsuarios {

    public boolean validarTipoDocumento(Persona unaPersona, String unTipoDocumento){

        return unaPersona.getTipoDocumento().equals(unTipoDocumento);

    }

    public boolean validarContrasenia(Persona unaPersona, String unaContrasenia){

        return unaPersona.getContrasenia().equals(unaContrasenia);
        
    }

    /**
     * Valida si falta ingresar datos al formulario
     * @param boxes arreglo de JComboBox
     * @param texts arreglo de JTextField
     * @param pass arreglo de JPasswordField
     * @return un arreglo de cuatro vectores
     *      el primero indica si falta informacion;
     *      el segundo, tercero y cuarto, indican los subindices de los
     *      JComboBox, JTextField y JPasswordField donde deberían insertarse
     *      valores.
     */
    public Vector<Vector> validarDatosFaltantes(JComboBox[] boxes, JTextField[] texts, JPasswordField[] pass) {
        Vector<Vector> v=new Vector();

        //Primero veo por informacion faltante
        //Primero los JComboBox
        Vector<Integer> c=new Vector();
        for(int i=0; i<7; i++)
            if(boxes[i].getSelectedIndex()==-1)
                c.add(i);

        //Luego los JTextFields
        Vector<Integer> t=new Vector();
        for(int i=0; i<8; i++)
            if(texts[i].getText().equals(""))
                t.add(i);

        //Y por último los JPasswordField
        Vector<Integer> p=new Vector();
        for(int i=0; i<2; i++)
            if(pass[i].getPassword().length==0)
                p.add(i);

        //Verifico si hay o no información faltante
        Vector<Integer> d=new Vector();
        if(p.isEmpty() && c.isEmpty() && t.isEmpty())
            d.add(0);
        else
            d.add(1);

        //Agrego en orden según necesite
        v.add(d);
        v.add(c);
        v.add(t);
        v.add(p);

        return v;
    }

    /**
     * 
     * @param texts un arreglo de JTextField
     * @param pass un arreglo de JPasswordField
     * @return un arreglo de tres vectores
     *      el primero indica si hay informacion errónea;
     *      el segundo y el tercero, indican los subindices de los
     *      JTextField y JPasswordField donde se registraron errores.
     */
    public Vector<Vector> validarDatosErroneos(JTextField[] texts, JPasswordField[] pass) {
        Vector<Vector> v=new Vector();

        Vector<Integer> t=new Vector();
        for(int i=0; i<8; i++){
            if(!texts[i].getText().equals(""))
                switch(i){
                    case 0:
                    case 1:
                    case 3:
                    case 5: if(!(texts[i].getText().length()<31) ||
                                !texts[i].getText().toLowerCase().matches("([\\w&&\\D]|[\\s]|[á|é|í|ó|ú|à|è|ì|ò|ù|'])*"))
                                t.add(i);
                            break;

                    case 2: if(!texts[i].getText().matches("((?=.*\\d).{6,8})"))
                                t.add(i);
                            break;

                    case 4: if(!texts[i].getText().matches("((?=.*\\d).{2,6})"))
                                t.add(i);
                            break;

                    case 6: if(!texts[i].getText().toLowerCase().matches("([\\w|\\d|.|_])*+@([\\w&&\\D])*+(\\.[a-z]{2,4})+"))
                                t.add(i);
                            break;

                    case 7: if(!texts[i].getText().equals(texts[i-1].getText()) ||
                                !texts[i].getText().toLowerCase().matches("([\\w|\\d|.|_])*+@([\\w&&\\D])*+(\\.[a-z]{2,4})+"))
                                t.add(i);
                            break;
            }
        }

        Vector<Integer> p=new Vector();
        if(pass[0].getPassword().length!=0 && !(String.valueOf(pass[0].getPassword()).toLowerCase().matches("((?=.*\\d)(?=.*[a-zA-Z]).{6,})")))
                p.add(0);
        if(pass[1].getPassword().length!=0 && !(String.valueOf(pass[1].getPassword()).toLowerCase().matches("((?=.*\\d)(?=.*[a-zA-Z]).{6,})")))
                p.add(1);

        if(p.isEmpty() && !(String.valueOf(pass[0].getPassword()).equals(String.valueOf(pass[1].getPassword())))){
                p.add(0);
                p.add(1);
        }

        Vector<Integer> d=new Vector();
        if(t.isEmpty() && p.isEmpty())
            d.add(0);

        else
            d.add(1);

        v.add(d);
        v.add(t);
        v.add(p);

        return v;
    }

}
